package cn.good.yan.b8.f1;

import java.io.File;

/**
 * b8 文件 File
 *    File操作
 * @author shengren.yan
 * @create 2023-08-01
 */
public class Test {

    public static void main(String[] args) throws Exception{
        // 创建File文件 ，
        File file = new File("D:\\home");
        // 获取绝对路径地址
        String absolutePath = file.getAbsolutePath();
        // 获取绝对路径地址（返回的File对象）
        File absoluteFile = file.getAbsoluteFile();
        // 获取文件名
        String name = file.getName();
        // 获取目录
        String path = file.getPath();
        // 获取上级目录，没有返回null ，如果new File(相对路径地址)，需要先 file.getAbsoluteFile().getParent()
        String parent = file.getParent();
        // 最近修改的时间
        long l = file.lastModified();

        // 获取该目录下的子文件和目录
        String[] list = file.list();
        // 获取该目录下的子文件和目录 （返回的File对象）
        File[] files = file.listFiles();
        // 把文件重命名到指定文件，
        boolean b = new File("D:\\home").renameTo(new File("D:\\home2"));

        // 判断该文件是否存在
        boolean exists = file.exists();
        // 是否是目录
        boolean directory = file.isDirectory();
        // 是否是文件
        boolean file1 = file.isFile();
        // 是否只读
        boolean b1 = file.canRead();
        // 是否可写
        boolean b2 = file.canWrite();
        // 是否隐藏
        boolean b3 = file.isHidden();

        // 创建文件，若存在，不再创建，返回false
        boolean newFile = file.createNewFile();
        // 创建目录
        boolean mkdir = file.mkdir();
        // 创建目录,如果上一级目录不存在，也创建
        boolean mkdir2 = file.mkdirs();
        // 删除文件或目录
        boolean delete = file.delete();
    }

    // 递归 删除文件
    public Boolean delFile( File file ) throws Exception{
        if (!file.exists()) {
            return true;
        }
        if (file.isFile()) {
            return file.delete();
        } else {
            // 是目录
            File[] files = file.listFiles();
            for (File f : files) {
                delFile(f); // 递归删除
            }
            return file.delete();
        }
    }

}
